﻿Vue.prototype.aspfm_haserror = aspfm_haserror;
Vue.prototype.aspfm_errormsg = aspfm_errormsg;
var AspfmRules = new Object(); var AspfmRulesText = new Object();
function aspfm_haserror(key) {
    var errormsg = aspfm_errormsg(key);
    if (errormsg)
    {
        ShowMsg(errormsg);
        return false;
    }
    return true;
}
function aspfm_errormsg(key,nullcheck) {
    var templist;
    if (key) {
        templist = $("span[aspfmkey='" + key + "']");
    }
    else {
        templist = $('span[aspfmkey]');
    }
    var errormsg = '';
    if (templist.length > 0) {
        templist.each(function () {
            var rules = Aspfm.Data.Form[$(this).attr("aspfmkey")+"_aspfmrule"];
            var warn = $(this).attr("aspfmwarn");
            var value = Aspfm.Data.Form[$(this).attr("aspfmkey")];
            if(!(value) && nullcheck)
            {
                return '';
            }
            if(rules)
            {
                var rulelist = rules.split('|');
                for (var ri = 0; ri < rulelist.length; ri++) {
                    var temprulestr=rulelist[ri];
                    if (temprulestr && AspfmRules[temprulestr]) {
                        if (AspfmRules[temprulestr](value) == false) {
                            errormsg += warn + AspfmRulesText[temprulestr];
                        }
                    }
                }
            }
        });
    }
    return errormsg;
}
AspfmRulesText["required"] = " 是必填项。";
AspfmRules["required"] = function (value) {
    if (Array.isArray(value)) {
        return !!value.length;
    }
    if (value === undefined || value === null) {
        return false;
    }
    return !!String(value).trim().length;
}
AspfmRulesText["email"] = " 要求邮件格式。";
AspfmRules["email"] = function (value) {
    return new RegExp(/^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/).test(String(value));
}
AspfmRulesText["url"] = " 要求URL地址格式。";
AspfmRules["url"] = function (value) {
    return new RegExp(/^((https?|ftp|file):\/\/)?([\da-z\.-]+)\.([a-z\.]{2,6})([\/\w \.-]*)*\/?$/).test(String(value));
}
AspfmRulesText["number"] = " 要求是数字。";
AspfmRules["number"] = function (value) {
    return new RegExp(/^-?\d*\.?\d+$/).test(String(value));
}
AspfmRulesText["chinese"] = " 要求包含中文。";
AspfmRules["chinese"] = function (value) {
    return new RegExp(/[\u4E00-\u9FA5]/).test(String(value));
}
AspfmRulesText["carno"] = " 要求车牌号。";
AspfmRules["carno"] = function (value) {
    return new RegExp(/^[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领A-Z]{1}[A-Z]{1}[A-Z0-9]{4}[A-Z0-9挂学警港澳]{1}$/).test(String(value));
}
AspfmRulesText["weixin"] = " 要求微信号。";
AspfmRules["weixin"] = function (value) {
    return new RegExp(/^[a-zA-Z]([-_a-zA-Z0-9]{5,19})+$/).test(String(value));
}
AspfmRulesText["qq"] = " 要求QQ号。";
AspfmRules["qq"] = function (value) {
    return new RegExp(/^[1-9][0-9]{4,10}$/).test(String(value));
}
AspfmRulesText["date"] = " 要求日期。";
AspfmRules["date"] = function (value) {
    return new RegExp(/^(?:(?!0000)[0-9]{4}-(?:(?:0[1-9]|1[0-2])-(?:0[1-9]|1[0-9]|2[0-8])|(?:0[13-9]|1[0-2])-(?:29|30)|(?:0[13578]|1[02])-31)|(?:[0-9]{2}(?:0[48]|[2468][048]|[13579][26])|(?:0[48]|[2468][048]|[13579][26])00)-02-29)$/).test(String(value));
}
AspfmRulesText["IDcard"] = " 要求身份证号。";
AspfmRules["IDcard"] = function (value) {
    return new RegExp(/^[1-9]\d{5}(18|19|([23]\d))\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$/).test(String(value));
}
AspfmRulesText["phone"] = " 要求手机号。";
AspfmRules["phone"] = function (value) {
    return new RegExp(/^[1][3][0-9]{9}$/).test(String(value));
}
AspfmRulesText["integer"] = " 要求正整数。";
AspfmRules["integer"] = function (value) {
    return new RegExp(/^\d+$/).test(String(value));
}
AspfmRulesText["absinteger"] = " 要求正负整数。";
AspfmRules["absinteger"] = function (value) {
    return new RegExp(/^-\d+$/).test(String(value));
}
AspfmRulesText["password"] = " 要求最少6位，包括至少1个大写字母，1个小写字母，1个数字，1个特殊字符。";
AspfmRules["password"] = function (value) {
    return new RegExp(/^.*(?=.{6,})(?=.*\d)(?=.*[A-Z])(?=.*[a-z])(?=.*[!@#$%^&*? ]).*$/).test(String(value));
}
AspfmRulesText["userno"] = " 要求4到16位（字母，数字，下划线，减号）。";
AspfmRules["userno"] = function (value) {
    return new RegExp(/^[a-zA-Z0-9_-]{4,16}$/).test(String(value));
}
// 对Date的扩展，将 Date 转化为指定格式的String
// 月(M)、日(d)、小时(h)、分(m)、秒(s)、季度(q) 可以用 1-2 个占位符， 
// 年(y)可以用 1-4 个占位符，毫秒(S)只能用 1 个占位符(是 1-3 位的数字) 
// 例子： 
// (new Date()).Format("yyyy-MM-dd hh:mm:ss.S") ==> 2006-07-02 08:09:04.423 
// (new Date()).Format("yyyy-M-d h:m:s.S")      ==> 2006-7-2 8:9:4.18 
Date.prototype.Format = function (fmt) { //author: meizz 
    var o = {
        "M+": this.getMonth() + 1, //月份 
        "d+": this.getDate(), //日 
        "h+": this.getHours(), //小时 
        "m+": this.getMinutes(), //分 
        "s+": this.getSeconds(), //秒 
        "q+": Math.floor((this.getMonth() + 3) / 3), //季度 
        "S": this.getMilliseconds() //毫秒 
    };
    if (/(y+)/.test(fmt)) fmt = fmt.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length));
    for (var k in o)
    if (new RegExp("(" + k + ")").test(fmt)) fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length)));
    return fmt;
}